package pckDao;

import java.io.Serializable;
import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JOptionPane;
import pckEntidad.Trabajador;
import pckUtil.Conexion;

public class TrabajadorDao implements Serializable {

    private Conexion oConexion=new Conexion();
    private Trabajador oTrabajador;
    private List<Trabajador> lisTrabajador=null;

   public Trabajador obtener(String codigo) {
         String sql = "select * from tbltrabajador where idTrab=?";
        try {
            PreparedStatement pst = oConexion.getConnection().prepareStatement(sql);                
            pst.setString(1, codigo);
            ResultSet rst = pst.executeQuery();
            
            while(rst.next()){
                oTrabajador=new Trabajador();
                oTrabajador.setIdtrab(rst.getString(1));
                oTrabajador.setApelpattra(rst.getString(2));
                oTrabajador.setApelmattra(rst.getString(3));
                oTrabajador.setNombtra(rst.getString(4));
                oTrabajador.setDnitra(rst.getString(5));
                oTrabajador.setFechcontra(rst.getString(6));
                oTrabajador.setDiretra(rst.getString(7));
                oTrabajador.setCargtra(rst.getString(8));
                oTrabajador.setFechnactra(rst.getString(9));
                oTrabajador.setEstatra(rst.getString(10));
                oTrabajador.setTelftra(rst.getString(11));
                oTrabajador.setUsuario(new UsuarioDao().obtener(rst.getString(12)));
            }
            return  oTrabajador;
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, ex.getMessage());
        }
         return null;
     }
   

    public void insertar(Trabajador oTra){
         String sql = "{call sping_Trabajador(?,?,?,?,?,?,?,?,?,?,?,?)}";
         CallableStatement cst;
        try {
            cst = oConexion.getConnection().prepareCall(sql);
            cst.setString(1, oTra.getApelpattra());
            cst.setString(2, oTra.getApelmattra());
            cst.setString(3, oTra.getNombtra());
            cst.setString(4, oTra.getDnitra());
            cst.setString(5, oTra.getFechcontra());
            cst.setString(6, oTra.getDiretra());
            cst.setString(7, oTra.getCargtra());
            cst.setString(8, oTra.getFechnactra());
            cst.setString(9, oTra.getEstatra());
            cst.setString(10, oTra.getTelftra());
            cst.setString(11, oTra.getUsuario().getIdusua());
            cst.setString(12, oTra.getSextra());
            cst.execute();            
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, ex.getMessage());
        }
           
     }
    
            
    public List<Trabajador> listar(){
    String sql = "{call splis_Trabajador}";
        try {
            CallableStatement cst = oConexion.getConnection().prepareCall(sql);
            ResultSet rst = cst.executeQuery();
            lisTrabajador= new ArrayList<Trabajador>();
            while(rst.next()){
                oTrabajador=  new Trabajador();
                oTrabajador.setIdtrab(rst.getString(1)); 
                oTrabajador.setApelpattra(rst.getString(2));
                oTrabajador.setApelmattra(rst.getString(3));
                oTrabajador.setNombtra(rst.getString(4));
                oTrabajador.setDnitra(rst.getString(5));
                oTrabajador.setFechcontra(rst.getString(6));
                oTrabajador.setDiretra((rst.getString(7)));
                oTrabajador.setCargtra(rst.getString(8));
                oTrabajador.setFechnactra(rst.getString(9));
                oTrabajador.setEstatra(rst.getString(10));
                oTrabajador.setTelftra(rst.getString(11));
                oTrabajador.setUsuario(new UsuarioDao().obtener(rst.getString(12)));
                oTrabajador.setSextra(rst.getString(13));
                lisTrabajador.add(oTrabajador);
            }
            return  lisTrabajador;
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, ex.getMessage());
        }
         return null;
     }
    
    
    public void actualizar( Trabajador oTra){
        try {
            String sql = "{call spact_tblTrabajador(?,?,?,?,?,?,?,?,?,?,?,?,?)}";
            CallableStatement cst = oConexion.getConnection().prepareCall(sql);
            cst.setString(1,oTra.getIdtrab());
            cst.setString(2, oTra.getApelpattra());
            cst.setString(3, oTra.getApelmattra());
            cst.setString(4, oTra.getNombtra());
            cst.setString(5, oTra.getDnitra());
            cst.setString(6, oTra.getFechcontra());
            cst.setString(7, oTra.getDiretra());
            cst.setString(8, oTra.getCargtra());
            cst.setString(9, oTra.getFechnactra());
            cst.setString(10, oTra.getEstatra());
            cst.setString(11, oTra.getTelftra());
            cst.setString(12, oTra.getUsuario().getIdusua());
            cst.setString(13, oTra.getSextra());
            cst.execute();
            
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, ex.getMessage());
        }
         
     }
    
    public void desactivar(String idTra){
    try{
        String sql="{call spdes_Trabajador(?)}";
        CallableStatement cst=oConexion.getConnection().prepareCall(sql);
        cst.setString(1,idTra);
        cst.execute();
    }catch(SQLException ex){
        JOptionPane.showMessageDialog(null, ex.getMessage());
    }
         
    }
 
}
